webshell原理 第二十九天
phpinfo()内容
通过phpinfo()页面可以找到相关信息:
php的版本号
网站根目录 document_root
allow_* 远程包含文件
disable_* 禁止什么内容
以及apache的版本号
l.php 探针的内容
此页面有以上内容还有测试连接数据库的位置,只能用于测试,不能用于爆破
phpmyadmin的getshell
两种情况:
1、sql注入漏洞后期需要通过muysql的file系列函数读取敏感文件或写入webshell
outfile
dumpfile
load_file()
读写文件函数调用的限制
因为涉及到在服务器上的写入文件,所以上述函数是否执行成功受到参数
secure_file_prive的影响:
•其中当参数 secure_file_priv 为空时,对导入导出无限制
•当值为一个指定的目录时,只能向指定的目录导入导出
•当值被设置为NULL时,禁止导入导出功能
secure_file_priv通过select @@secure_file_priv查询,
由于这个参数不能动态更改,只能在mysql的配置文件中进行修改,然后重启生效
dumpfile与outfile的区别
导出数据库场景下的差异
select …… into outfile
其中有两个值得注意的坑点
outfile函数可以导出多行,而dumpfile只能导出一行数据
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
我们接下来通过导出测试看看这里面的细节
首先通过命令 select * from test into outfile '/tmp/test.txt' 来使用outfile导出
可以看到文件 /tmp/test.txt 文件中保存了所有的数据并且在一行数据的末尾自动换行
select …… into dumpfile
而接着使用命令 select * from test into dumpfile '/tmp/test.txt' 使用dumpfile进行导出
可以看到此命令在执行的时候提示输出超过一行
查看文件内容
写入webshell的方式
outfile 对添加的内容进行特殊字符放入转换并在末尾添加一行,
dumpfile 对文件内容是愿意写入,并未做任何的增加
outfile 不能接0x开头或者char转换后的路径,自能是单引号
load_file,后面的路径可以是单引号、0x、char转换的字符,但是路径中的斜杠是/而不是\
第二种:
源码粘贴到服务器根目录,修改文件权限
chown -R apache:apache /var/www/html
chown -R 777 /var/www/html
再者修改mysql的日志,加入webshell
mysql每执行一个sql语句,就会把sql语句写入到文件日志中,但是默认情况下这个选项是关闭的
因此,需要开启这个选项,设置日志路径,日志路径设置为网站目录,日志文件名字为 .php结尾的文件
php代码的三种写入方式
<?php ?>
<? ?>
<% %>
Assert()调试代码
Eval()、和Assert()作用都是将字符串当作代码执行。
执行代码和执行系统命令是两回事
执行代码时可以执行命令的,
使用quantum hackbar
<?php @eval($_POST[‘pass’])?>
pass=phpinfo();
原理:
$_POST[‘pass’] 传参
@ 不显示错误信息
POST提交数据
pass=phpinfo();
@eval(‘phpinfo();’); <?php ?> 最后一样可以省略 ;
日志会记录GET请求,地址参数,POST(推荐使用)不记录提交的数据,记录指向的文件
REQUEST不推荐,会被爆破日志
菜刀,冰蝎,蚁剑,
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:webshell原理 第二十九天
本文作者:弈少
发布时间:2019-08-26, 12:41:28
最后更新:2019-08-29, 22:57:10
原始链接:http://yoursite.com/2019/08/26/北京渗透测试第二十九天 20190826/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。